<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>变量提升</title>
    <style>
        .标注 {
            color: red;
        }
    </style>
</head>
<body>
<h3>变量提升</h3>
<p>
    变量提升是 JavaScript 中比较“奇怪”的现象，它允许在变量声明之前即被访问（仅存在于var声明变量） <br>
    注意： <br>
    1. 变量在未声明即被访问时会报语法错误 <br>
    2. 变量在var声明之前即被访问，变量的值为 undefined <br>
    3. let/const 声明的变量不存在变量提升 <br>
    4. 变量提升出现在相同作用域当中 <br>
    5. 实际开发中推荐先声明再访问变量
</p>
<p class="标注">
    var声明变量,了解下就行,因为是已经淘汰的 <br>
    严格来说, var声明 是JS的设计缺陷 <br>
    但是老项目你会见到,所以要 认识
</p>
<hr>

<p>
    说明： <br>
    JS初学者经常花很多时间才能习惯变量提升，还经常出现一些意想不到的bug，正因为如此，ES6 引入了块级作用域， <br>
    用let 或者 const声明变量，让代码写法更加规范和人性化
</p>
<hr>

<script>
    console.log(数字)
    var 数字 = 12

    // var 提升的过程
    // 1. 把所有var声明的变量提升到 当前作用域的最前面
    // 2. 只提升声明， 不提升赋值
    var 数字
    console.log(数字) // 上面的代码,实际处理时,就变成了这样
    数字 = 12

</script>
</body>
</html>